# 一、数字类型示例
print("="*50)
print("【数字类型示例】")
print("="*50)

# 1. 整数（int）
int_positive = 42               # 正整数
int_negative = -18              # 负整数
int_zero = 0                    # 零
int_large = 123456789012345678901234567890  # 超大整数
print(f"1. 整数(int)：")
print(f"   正整数: {int_positive}，类型: {type(int_positive)}")
print(f"   负整数: {int_negative}，类型: {type(int_negative)}")
print(f"   零: {int_zero}，类型: {type(int_zero)}")
print(f"   超大整数: {int_large}，类型: {type(int_large)}")
print()

# 2. 浮点数（float）
float_normal = 3.14159          # 普通浮点数
float_negative = -0.0001        # 负浮点数
float_scientific = 2.998e8      # 科学计数法（光速）
float_integer_form = 5.0        # 整数形式的浮点数
print(f"2. 浮点数(float)：")
print(f"   普通浮点数: {float_normal}，类型: {type(float_normal)}")
print(f"   负浮点数: {float_negative}，类型: {type(float_negative)}")
print(f"   科学计数法: {float_scientific}（等价于299800000.0），类型: {type(float_scientific)}")
print(f"   整数形式浮点数: {float_integer_form}，类型: {type(float_integer_form)}")
print()

# 3. 复数（complex）
complex_1 = 3 + 4j              # 实部3，虚部4
complex_2 = -1.5 - 2j           # 负实部和负虚部
complex_pure = 7j               # 纯虚数
print(f"3. 复数(complex)：")
print(f"   普通复数: {complex_1}，实部: {complex_1.real}，虚部: {complex_1.imag}，类型: {type(complex_1)}")
print(f"   负复数: {complex_2}，类型: {type(complex_2)}")
print(f"   纯虚数: {complex_pure}，类型: {type(complex_pure)}")
print()

# 4. 布尔值（bool）
bool_true = True
bool_false = False
print(f"4. 布尔值(bool)：")
print(f"   True: {bool_true}，类型: {type(bool_true)}，True+1={bool_true + 1}")
print(f"   False: {bool_false}，类型: {type(bool_false)}，False*5={bool_false * 5}")
print()


# 二、组合数据类型示例
print("="*50)
print("【组合数据类型示例】")
print("="*50)

# 1. 列表（list）
list_numbers = [10, 20, 30, 40]       # 整数列表
list_strings = ["cat", "dog", "bird"] # 字符串列表
list_mixed = [1, "apple", 3.14, True] # 混合类型列表
list_empty = []                       # 空列表
list_nested = [[1, 2], [3, 4], [5, 6]] # 嵌套列表
print(f"1. 列表(list)：")
print(f"   整数列表: {list_numbers}，类型: {type(list_numbers)}")
print(f"   字符串列表: {list_strings}，类型: {type(list_strings)}")
print(f"   混合类型列表: {list_mixed}，类型: {type(list_mixed)}")
print(f"   空列表: {list_empty}，类型: {type(list_empty)}")
print(f"   嵌套列表: {list_nested}，类型: {type(list_nested)}")
# 演示列表可修改
print(f"   列表修改演示：修改前 {list_numbers} -> ", end="")
list_numbers[0] = 99
print(f"修改后 {list_numbers}")
print()

# 2. 元组（tuple）
tuple_cities = ("北京", "上海", "广州") # 字符串元组
tuple_numbers = (100, 200, 300)       # 整数元组
tuple_single = (5,)                   # 单元素元组
tuple_empty = ()                      # 空元组
tuple_nested = (("a", "b"), (1, 2))   # 嵌套元组
print(f"2. 元组(tuple)：")
print(f"   字符串元组: {tuple_cities}，类型: {type(tuple_cities)}")
print(f"   整数元组: {tuple_numbers}，类型: {type(tuple_numbers)}")
print(f"   单元素元组(注意逗号)：{tuple_single}，类型: {type(tuple_single)}")
print(f"   空元组: {tuple_empty}，类型: {type(tuple_empty)}")
print(f"   嵌套元组: {tuple_nested}，类型: {type(tuple_nested)}")
print(f"   元组特性：不可修改（尝试修改会报错）")
print()

# 3. 字典（dict）
dict_person = {"name": "张三", "age": 30, "is_student": False} # 基本字典
dict_numbers = {1: "一", 2: "二", 3: "三"}                    # 整数键字典
dict_empty = {}                                                # 空字典
dict_nested = {
    "user1": {"username": "user01", "password": "123"},
    "user2": {"username": "user02", "password": "456"}
}                                                              # 嵌套字典
print(f"3. 字典(dict)：")
print(f"   人员信息字典: {dict_person}，类型: {type(dict_person)}")
print(f"   数字映射字典: {dict_numbers}，类型: {type(dict_numbers)}")
print(f"   空字典: {dict_empty}，类型: {type(dict_empty)}")
print(f"   嵌套字典: {dict_nested}，类型: {type(dict_nested)}")
# 演示字典可修改
print(f"   字典修改演示：修改前年龄 {dict_person['age']} -> ", end="")
dict_person['age'] = 31
print(f"修改后年龄 {dict_person['age']}")
print()

# 4. 集合（set）
set_fruits = {"苹果", "香蕉", "橙子"}          # 字符串集合
set_numbers = {1, 2, 3, 3, 4}                 # 自动去重
set_empty = set()                             # 空集合
set_from_list = set([5, 5, 6, 7, 7])          # 从列表转换（去重）
print(f"4. 集合(set)：")
print(f"   水果集合: {set_fruits}，类型: {type(set_fruits)}")
print(f"   去重演示：原始数据{[1,2,3,3,4]} -> 集合{set_numbers}")
print(f"   空集合: {set_empty}，类型: {type(set_empty)}")
print(f"   列表转集合：{[5,5,6,7,7]} -> {set_from_list}")
# 演示集合可修改
print(f"   集合添加演示：添加前 {set_fruits} -> ", end="")
set_fruits.add("葡萄")
print(f"添加后 {set_fruits}")
print()

# 5. 字符串（str）
str_single_quote = 'Hello World'              # 单引号字符串
str_double_quote = "Python 编程"              # 双引号字符串
str_multi_line = '''第一行文本
第二行文本
第三行文本'''                                 # 三引号多行字符串
str_empty = ""                                # 空字符串
str_escape = "姓名：\t李四\n年龄：\t25"       # 转义字符
print(f"5. 字符串(str)：")
print(f"   单引号字符串: {str_single_quote}，类型: {type(str_single_quote)}")
print(f"   双引号字符串: {str_double_quote}，类型: {type(str_double_quote)}")
print(f"   多行字符串: \n{str_multi_line}")
print(f"   空字符串: '{str_empty}'，类型: {type(str_empty)}")
print(f"   转义字符演示: \n{str_escape}")
print(f"   字符串切片: {str_double_quote} -> 截取第3-6位: {str_double_quote[3:6]}")
print()


# 三、应用场景示例
print("="*50)
print("【数据类型应用场景示例】")
print("="*50)

# 数字类型场景
print("1. 数字类型应用场景：")
print(f"   整数: 商品编号{int_positive}，库存{int_large}件")
print(f"   浮点数: 苹果单价{float_normal}元，光速{float_scientific}m/s")
print(f"   复数: 电路阻抗{complex_1}欧姆（用于电子工程计算）")
print(f"   布尔值: 用户登录状态{'已登录' if bool_true else '未登录'}")
print()

# 组合类型场景
print("2. 组合类型应用场景：")
print(f"   列表: 待办任务{list_numbers}（可动态增删改）")
print(f"   元组: 城市坐标{tuple_cities[0]}的经纬度（固定不可修改）")
print(f"   字典: 用户信息{dict_person}（通过键快速查询值）")
print(f"   集合: 商品标签{set_fruits}（自动去重，方便分类）")
print(f"   字符串: 用户通知{str_double_quote}（文本展示）")
print()

# 综合场景（电商订单）
print("3. 综合场景：电商订单处理")
order = {
    "order_id": int_positive,  # 整数：订单编号
    "products": [              # 列表：商品列表
        {"name": "苹果", "price": float_normal, "count": 2},  # 字典：商品详情
        {"name": "香蕉", "price": 2.5, "count": 3}
    ],
    "address": ("北京市", "朝阳区", "100000"),  # 元组：地址（不可改）
    "tags": {"促销", "生鲜"},  # 集合：订单标签
    "is_paid": bool_true,      # 布尔值：支付状态
    "note": str_escape         # 字符串：用户备注
}
print("   订单完整信息：")
print(f"   {order}")

print("\n" + "="*50)
print("运行结束：所有数据类型及场景示例展示完毕")